#ifndef COMPONENT_H
#define COMPONENT_H

#include <list>

#include <utils/String.h>

// Purpose: A generic Component interface for uniquely-IDed, inter-dependent
//  components

//NOTE: The CRTP is used here to separate types of components
template< class T >
class Component
{
public:
	virtual std::list< String > getDependencies() const = 0;
	virtual String              getID() const = 0;
};

#endif
